package com.larly.model.vo;

import com.larly.model.domain.Notes;
import lombok.Data;
import org.springframework.beans.BeanUtils;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

/**
 * 存储所有学习笔记的核心表
 *
 * @TableName notes
 */
@Data
public class NotesVO implements Serializable {
    /**
     * 笔记ID，自增主键
     */
    private Integer id;

    /**
     * 笔记标题
     */
    private String title;

    /**
     * 笔记正文内容
     */
    private String content;

    /**
     * 笔记分类（如：前端、Java、数据库）
     */
    private String category;

    /**
     * 笔记标签，多个标签用逗号分隔（如："React, Hooks, 前端"）
     */
    private String tags;

    /**
     * 笔记封面图片URL
     */
    private String coverImage;

    /**
     * 是否公开（0-私密，1-公开）
     */
    private Integer isPublic;

    /**
     * 是否置顶（0-不置顶，1-置顶）
     */
    private Integer isPinned;

    /**
     * 阅读量
     */
    private Integer views;

    /**
     * 点赞数
     */
    private Integer likes;

    /**
     * 状态（draft-草稿，published-已发布）
     */
    private String status;

    /**
     * 是否删除（0-正常，1-已放入回收站）
     */
    private Integer isDeleted;

    /**
     * 版本ID
     */
    private List<Integer> versionId;

    /**
     * 创建用户
     */
    private UserVO userVO;

    /**
     * 创建时间（首次发布时间）
     */
    private Date createdAt;

    /**
     * 更新时间（最后编辑时间）
     */
    private Date updatedAt;


    private static final long serialVersionUID = 1L;

    /**
     * VO为实体对象
     *
     * @return
     */
    public static Notes toEntity(NotesVO notesVo) {
        Notes note = new Notes();
        BeanUtils.copyProperties(notesVo, note);
        return note;
    }

    /**
     * 实体对象为VO对象
     *
     * @return
     */
    public static NotesVO toVO(Notes notes) {
        NotesVO notesVo = new NotesVO();
        BeanUtils.copyProperties(notes, notesVo);
        return notesVo;
    }

}